]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
main: Only restore key focus on pop when modal actor is still focused
authorJonas Dreßler <verdre@v0yd.nl>
Sat, 13 Feb 2021 15:16:20 +0000 (16:16 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Mon, 29 Jan 2024 23:14:24 +0000 (23:14 +0000)
If something grabs the key focus while a modal is pushed, keeping
key-focus on that actor seems like the smarter thing to do than setting
it back to the last focus after the modal gets popped again. So check if
the key focus actor that we set when pushing the modal got changed when
popping that modal, and if it got changed, simply don't touch key focus.

This fixes a bug with the close dialog, where key focus isn't correctly
set to the dialog after alt-tabbing to a window showing a close dialog.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/786>

js/ui/main.js

index 4ba3faa8c2782b4da2096392af4821d30bfaf02c..23e36aba55867b31e62fe9b87049af6dc60c5594 100644 (file)
@@ -755,7 +755,8 @@ export function popModal(grab, timestamp) {
         if (record.prevFocus)
             record.prevFocus.disconnect(record.prevFocusDestroyId);
         actionMode = record.actionMode;
-        global.stage.set_key_focus(record.prevFocus);
+        if (global.stage.key_focus === record.actor)
+            global.stage.set_key_focus(record.prevFocus);
     } else {
         // If we have:
         //     global.stage.set_focus(a);